Code coverage report for ./src/ocLazyLoad.directive.js

Statements: 100% (13 / 13)      Branches: 50% (2 / 4)      Functions: 100% (7 / 7)      Lines: 100% (13 / 13)      Ignored: none     

All files » ./src/ » ocLazyLoad.directive.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37    1     1 1           1 1   1 1 1 8   1 1       1   1                  
'use strict';
 
(function (angular) {
    'use strict';
 
    angular.module('oc.lazyLoad').directive('ocLazyLoad', function ($ocLazyLoad, $compile, $animate, $parse, $timeout) {
        return {
            restrict: 'A',
            terminal: true,
            priority: 1000,
            compile: function compile(element, attrs) {
                // we store the content and remove it before compilation
                var content = element[0].innerHTML;
                element.html('');
 
                return function ($scope, $element, $attr) {
                    var model = $parse($attr.ocLazyLoad);
                    $scope.$watch(function () {
                        return model($scope) || $attr.ocLazyLoad; // it can be a module name (string), an object, an array, or a scope reference to any of this
                    }, function (moduleName) {
                        Eif (angular.isDefined(moduleName)) {
                            $ocLazyLoad.load(moduleName).then(function () {
                                // Attach element contents to DOM and then compile them.
                                // This prevents an issue where IE invalidates saved element objects (HTMLCollections)
                                // of the compiled contents when attaching to the parent DOM.
                                $animate.enter(content, $element);
                                // get the new content & compile it
                                $compile($element.contents())($scope);
                            });
                        }
                    }, true);
                };
            }
        };
    });
})(angular);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkM6L3dhbXAvd3d3L29jTGF6eUxvYWQvc3JjL29jTGF6eUxvYWQuZGlyZWN0aXZlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsQ0FBQyxVQUFBLE9BQU8sRUFBSTtBQUNSLGdCQUFZLENBQUM7O0FBRWIsV0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLFVBQVMsV0FBVyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtBQUM5RyxlQUFPO0FBQ0gsb0JBQVEsRUFBRSxHQUFHO0FBQ2Isb0JBQVEsRUFBRSxJQUFJO0FBQ2Qsb0JBQVEsRUFBRSxJQUFJO0FBQ2QsbUJBQU8sRUFBRSxpQkFBUyxPQUFPLEVBQUUsS0FBSyxFQUFFOztBQUU5QixvQkFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNuQyx1QkFBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzs7QUFFakIsdUJBQU8sVUFBUyxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtBQUNyQyx3QkFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNyQywwQkFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFNO0FBQ2hCLCtCQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDO3FCQUM1QyxFQUFFLFVBQUEsVUFBVSxFQUFJO0FBQ2IsNEJBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUM5Qix1Q0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTTs7OztBQUlwQyx3Q0FBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7O0FBRWxDLHdDQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7NkJBQ3pDLENBQUMsQ0FBQzt5QkFDTjtxQkFDSixFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUNaLENBQUM7YUFDTDtTQUNKLENBQUM7S0FDTCxDQUFDLENBQUM7Q0FFTixDQUFBLENBQUUsT0FBTyxDQUFDLENBQUMiLCJmaWxlIjoiQzovd2FtcC93d3cvb2NMYXp5TG9hZC9zcmMvb2NMYXp5TG9hZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoYW5ndWxhciA9PiB7XHJcbiAgICAndXNlIHN0cmljdCc7XHJcblxyXG4gICAgYW5ndWxhci5tb2R1bGUoJ29jLmxhenlMb2FkJykuZGlyZWN0aXZlKCdvY0xhenlMb2FkJywgZnVuY3Rpb24oJG9jTGF6eUxvYWQsICRjb21waWxlLCAkYW5pbWF0ZSwgJHBhcnNlLCAkdGltZW91dCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgIHRlcm1pbmFsOiB0cnVlLFxyXG4gICAgICAgICAgICBwcmlvcml0eTogMTAwMCxcclxuICAgICAgICAgICAgY29tcGlsZTogZnVuY3Rpb24oZWxlbWVudCwgYXR0cnMpIHtcclxuICAgICAgICAgICAgICAgIC8vIHdlIHN0b3JlIHRoZSBjb250ZW50IGFuZCByZW1vdmUgaXQgYmVmb3JlIGNvbXBpbGF0aW9uXHJcbiAgICAgICAgICAgICAgICB2YXIgY29udGVudCA9IGVsZW1lbnRbMF0uaW5uZXJIVE1MO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5odG1sKCcnKTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oJHNjb3BlLCAkZWxlbWVudCwgJGF0dHIpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbW9kZWwgPSAkcGFyc2UoJGF0dHIub2NMYXp5TG9hZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiR3YXRjaCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtb2RlbCgkc2NvcGUpIHx8ICRhdHRyLm9jTGF6eUxvYWQ7IC8vIGl0IGNhbiBiZSBhIG1vZHVsZSBuYW1lIChzdHJpbmcpLCBhbiBvYmplY3QsIGFuIGFycmF5LCBvciBhIHNjb3BlIHJlZmVyZW5jZSB0byBhbnkgb2YgdGhpc1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIG1vZHVsZU5hbWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihhbmd1bGFyLmlzRGVmaW5lZChtb2R1bGVOYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9jTGF6eUxvYWQubG9hZChtb2R1bGVOYW1lKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdHRhY2ggZWxlbWVudCBjb250ZW50cyB0byBET00gYW5kIHRoZW4gY29tcGlsZSB0aGVtLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgcHJldmVudHMgYW4gaXNzdWUgd2hlcmUgSUUgaW52YWxpZGF0ZXMgc2F2ZWQgZWxlbWVudCBvYmplY3RzIChIVE1MQ29sbGVjdGlvbnMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgdGhlIGNvbXBpbGVkIGNvbnRlbnRzIHdoZW4gYXR0YWNoaW5nIHRvIHRoZSBwYXJlbnQgRE9NLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbmltYXRlLmVudGVyKGNvbnRlbnQsICRlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXQgdGhlIG5ldyBjb250ZW50ICYgY29tcGlsZSBpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb21waWxlKCRlbGVtZW50LmNvbnRlbnRzKCkpKCRzY29wZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbn0pKGFuZ3VsYXIpO1xyXG4iXX0=